#include "../header.h"

static unsigned int nums  = 1000;  // 共享公共数据。

//1.一个主线程 + 2个子线程。
//3.主线程给子线程传递数据，数值 - 字符串 - 结构体
//4.全局数据的方式传递数据。

//线程1 - 传递字符串。
void * pthread_fun1(void * arg)
{
    char * cstr1 = (char *)arg;
    printf("this is %s test :%d :%lu-传递的内容是%s>>> nums = %d\n",__func__,getpid(),pthread_self(),cstr1,--nums);
    return NULL;
}
//线程2 - 传递数值。
void * pthread_fun2(void * arg)
{   
    int * nump = (int*)arg;
    printf("this is %s test :%d :%lu 传递的数值是:%d >>> nums = %d\n",__func__,getpid(),pthread_self(),*nump,--nums);
    return NULL;
}
//线程3 - 传递结构体。
void * pthread_fun3(void * arg)
{
    car_t * carp = (car_t*)arg;
    printf("this is %s test :%d :%lu 名字:%s - 价格：%d  >>> nums = %d \n",__func__,getpid(),pthread_self(),carp->name,carp->price,++nums);
    return NULL;
}

int main(int argc, char const *argv[])
{

    car_t carn = {"benz",200000};

    //定义空间。
    pthread_t tid1,tid2,tid3;
    char * str1 = "hello linux1";
    int num1 =100;
    //创建三个线程
    pthread_create(&tid1,NULL,pthread_fun1,str1);
    pthread_create(&tid2,NULL,pthread_fun2,&num1);
    pthread_create(&tid3,NULL,pthread_fun3,&carn);
    //防止子线程没有执行的时间。
    printf("主线程 线程号:%lu,子线程1:%lu,子线程2:%lu 子线程3:%lu >>> nums = %d\n",pthread_self(),tid1,tid2,tid3,++nums);
    sleep(1);

    return 0;
}


